home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)zn.d64 / proc.u'graph < prev    next >
Text File  |  2007-03-01  |  12KB  |  351 lines

  1. 0210 ╨╥╧├ U'GRAPH(TYPE,REP,╥┼╞ VALUES(,),╥┼╞ SCALE$(,),╥┼╞ LABELS$()) ├╠╧╙┼─
  2. 0220   // ┴.├.═ILLEST - 18.10.86 VERSION
  3. 0225   // 23.11.86 X SCALES  IN COLUMNS
  4. 0230   ╒╙┼ GRAPHICS
  5. 0240   GRAPHICSCREEN(0)
  6. 0250   ╒╙┼ SYSTEM
  7. 0260   ─╔═ N$ ╧╞ 6, HI(26)
  8. 0270   STORE(1)
  9. 0280   WINDOW(INQ(19),INQ(20),INQ(21),INQ(22))
  10. 0290   SET'VARIABLES
  11. 0300   ╨╥╧├ SET'VARIABLES 
  12. 0310     XSPACE:=INQ(20)-INQ(19); YSPACE:=INQ(22)-INQ(21)
  13. 0320     ├┴╙┼ SCALE$(0,1)(1) ╧╞ // X SCALE
  14. 0330     ╫╚┼╬ "N"
  15. 0340       XST:=╓┴╠(SCALE$(1,1))
  16. 0350       XEND:=╓┴╠(SCALE$(2,1))
  17. 0360       XN:=╓┴╠(SCALE$(3,1))
  18. 0370       XI:=(XEND-XST)/XN
  19. 0380       X'CHAR'LEN:=FIND'NO'LENGTH(XST,XEND,XI)
  20. 0390     ╫╚┼╬ "A"
  21. 0400       XST:=1; XEND:=╓┴╠(SCALE$(0,1)(2:)); XN:=XEND-1
  22. 0410       X'CHAR'LEN:=FIND'LENGTH(1,╓┴╠(SCALE$(0,1)(2:)),1,1) // IN PIXELS
  23. 0420     ╫╚┼╬ "V"
  24. 0430       XST:=╓┴╠(SCALE$(1,1)); XEND:=╓┴╠(SCALE$(2,1)); XN:=╓┴╠(SCALE$(3,1))
  25. 0440       X'CHAR'LEN:=FIND'LENGTH(4,╓┴╠(SCALE$(0,1)(2:))*2+2,2,1)
  26. 0450     ┼╬─├┴╙┼ 
  27. 0460     
  28. 0470     ├┴╙┼ SCALE$(0,2)(1) ╧╞ // Y SCALE
  29. 0480     ╫╚┼╬ "N"
  30. 0490       YST:=╓┴╠(SCALE$(1,2))
  31. 0500       YEND:=╓┴╠(SCALE$(2,2))
  32. 0510       YN:=╓┴╠(SCALE$(3,2))
  33. 0520       YI:=(YEND-YST)/YN
  34. 0530       Y'CHAR'LEN:=FIND'NO'LENGTH(YST,YEND,YI)
  35. 0540     ╫╚┼╬ "A"
  36. 0550       YST:=0; YEND:=╓┴╠(SCALE$(0,2)(2:)); YN:=YEND
  37. 0560       Y'CHAR'LEN:=FIND'LENGTH(1,╓┴╠(SCALE$(0,2)(2:)),1,2) // IN PIXELS
  38. 0570     ╫╚┼╬ "V"
  39. 0580       YST:=╓┴╠(SCALE$(1,2)); YEND:=╓┴╠(SCALE$(2,2)); YN:=╓┴╠(SCALE$(3,2))
  40. 0590       Y'CHAR'LEN:=FIND'LENGTH(4,╓┴╠(SCALE$(0,2)(2:))*2+2,2,2)
  41. 0600     ┼╬─├┴╙┼ 
  42. 0610     // ORIGINS: OX SCALE; OX-4 AXIS
  43. 0620     // OY SCALE & AXIS ORIGIN
  44. 0630     OY:=INQ(21)+X'CHAR'LEN+4 // ORIGIN
  45. 0640     OX:=INQ(19)+Y'CHAR'LEN+6 // ORIGIN
  46. 0650     XI:=(XEND-XST)/XN; YI:=(YEND-YST)/YN
  47. 0660     PAIRS:=VALUES(0,1)
  48. 0670     // ALLOW FOR SCALE CHARS & LABELS - 16 FOR 4 DIGIT XEND NUMBERS
  49. 0680     XPIX:=XSPACE-(Y'CHAR'LEN+6+12)
  50. 0690     YPIX:=YSPACE-(X'CHAR'LEN+4+28)
  51. 0700   ┼╬─╨╥╧├ SET'VARIABLES
  52. 0710   TEXTSTYLE(1,1,0,0)
  53. 0720   VIEWPORT(OX,OX+XPIX,OY,OY+YPIX)
  54. 0730   WINDOW(XST,XEND,YST,YEND) //SCALE SET HERE
  55. 0740   ├┴╙┼ REP ╧╞
  56. 0750   ╫╚┼╬ 1
  57. 0760     VIEWPORT(OX-3,OX+XPIX+12,OY+1,OY+YPIX+28)
  58. 0770     CLEAR
  59. 0780     ╔╞ SCALE$(0,2)(1)="V" ╘╚┼╬ V'GRID(2)
  60. 0790     ╔╞ SCALE$(0,1)(1)="V" ╘╚┼╬ V'GRID(1)
  61. 0800     CROSS'AXES
  62. 0810     ╔╞ VALUES(0,2)=╘╥╒┼ ┴╬─ ╘╚┼╬ TYPE<>1 ╘╚┼╬ GRID
  63. 0820   ╫╚┼╬ 2
  64. 0830     VIEWPORT(HI(19),HI(20),HI(21),HI(22))
  65. 0840     CROSS'AXES
  66. 0850   ╫╚┼╬ 0
  67. 0860     // VIEWPORT TO FULL GRAPHWINDOW
  68. 0870     VIEWPORT(HI(19),HI(20),HI(21),HI(22))
  69. 0880     CLEAR
  70. 0890     TICK:=2 //SIZE OF A GRADUATION MARK
  71. 0900     GAP:=4 //GAP BETWEEN TICK AND TEXT
  72. 0910     H:=8 //TEXT HEIGHT
  73. 0920     W:=8 //TEXT WIDTH
  74. 0930     ╞╧╥ AXIS:=0 ╘╧ 1 ─╧
  75. 0940       TEXTSTYLE(1,1,0,1)
  76. 0950       MOVETO(XST-4/INQ(30),YST)
  77. 0960       ├┴╙┼ AXIS ╧╞
  78. 0970       ╫╚┼╬ 0
  79. 0980         DRAWTO(XEND+4/INQ(30),YST) //X AXIS
  80. 0990         PLOTTEXT(XEND+6/INQ(30),YST-5/INQ(31),"X")
  81. 1000         ╔╞ SCALE$(0,1)(1)="N" ╘╚┼╬
  82. 1010           SCALE'DIVISIONS:=╓┴╠(SCALE$(3,1))
  83. 1020         ┼╠╙┼ 
  84. 1030           SCALE'DIVISIONS:=╓┴╠(SCALE$(0,1)(2:))-1
  85. 1040         ┼╬─╔╞ 
  86. 1050       ╫╚┼╬ 1
  87. 1060         DRAWTO(XST-4/INQ(30),YEND)
  88. 1070         PLOTTEXT(XST-(Y'CHAR'LEN/2+10)/INQ(30),YEND+9/INQ(31),"Y")
  89. 1080         ╔╞ SCALE$(0,2)(1)="N" ╘╚┼╬
  90. 1090           SCALE'DIVISIONS:=╓┴╠(SCALE$(3,2))
  91. 1100         ┼╠╔╞ SCALE$(0,2)(1)="A" ╘╚┼╬
  92. 1110           SCALE'DIVISIONS:=╓┴╠(SCALE$(0,2)(2:))
  93. 1120         ┼╠╙┼ 
  94. 1130           SCALE'DIVISIONS:=╓┴╠(SCALE$(0,2)(2:))-1
  95. 1140         ┼╬─╔╞ 
  96. 1150       ┼╬─├┴╙┼ // END AXES DRAWING
  97. 1160       
  98. 1170       ╞╧╥ I:=0 ╘╧ SCALE'DIVISIONS ─╧
  99. 1180         ├┴╙┼ AXIS ╧╞
  100. 1190         ╫╚┼╬ 0
  101. 1200           HOR:=XST+(XI*I); VERT:=YST
  102. 1210           NUM:=XST+I*XI
  103. 1220         ╫╚┼╬ 1
  104. 1230           HOR:=XST-4/INQ(30); VERT:=YST+(YI*I)
  105. 1240           NUM:=YST+I*YI
  106. 1250         ┼╬─├┴╙┼ 
  107. 1260         MOVETO(HOR,VERT)
  108. 1270         N$:=╙╘╥$(NUM)
  109. 1280         L:=╠┼╬(N$)
  110. 1290         L2:=L*.5
  111. 1300         ├┴╙┼ AXIS ╧╞
  112. 1310         ╫╚┼╬ 0 // CONDITIONS FOR LABELS
  113. 1320           X'START:=11/INQ(31)
  114. 1330           TEXTSTYLE(1,1,0,1)
  115. 1340           ├┴╙┼ SCALE$(0,1)(1) ╧╞ // X SCALE
  116. 1350           ╫╚┼╬ "N" // NUMBERS
  117. 1360             TICK:=2
  118. 1370             MOVETO(HOR,YST)
  119. 1380             ╔╞ XPIX/XN>10 ╘╚┼╬
  120. 1390               X'PRINT(HOR-4/INQ(30),YST-X'START,N$)
  121. 1400             ┼╠╔╞ XPIX/XN>5 ┴╬─ ╘╚┼╬ I ═╧─ 2=0 ╘╚┼╬
  122. 1410               X'PRINT(HOR-4/INQ(30),YST-X'START,N$)
  123. 1420             ┼╠╔╞ I ═╧─ 4=0 ╘╚┼╬
  124. 1430               X'PRINT(HOR-4/INQ(30),YST-X'START,N$)
  125. 1440             ┼╠╙┼ 
  126. 1450               TICK:=1
  127. 1460             ┼╬─╔╞ 
  128. 1470             DRAWTO(HOR,VERT-(TICK/INQ(31)))
  129. 1480           ╫╚┼╬ "A" // LETTERS EVEN SPACING
  130. 1490             X'PRINT(HOR-4/INQ(30),YST-X'START,SCALE$(I+1,1))
  131. 1500             DRAWTO(HOR,VERT-(TICK/INQ(31)))
  132. 1510           ╫╚┼╬ "V" // LETTERS SET POSITIONS
  133. 1520             X'PRINT(╓┴╠(SCALE$(5+2*I,1))-4/INQ(30),YST-X'START,SCALE$(4+2*I,1))
  134. 1530             MOVETO(╓┴╠(SCALE$(5+2*I,1)),YST)
  135. 1540             DRAW(0,-2/INQ(31))
  136. 1550           ┼╬─├┴╙┼ 
  137. 1560           
  138. 1570         ╫╚┼╬ 1
  139. 1580           GAP:=1; TICK:=1
  140. 1590           PX:=HOR-(TICK+GAP+W*L)/INQ(30)
  141. 1600           PY:=VERT-(H*.5/INQ(31))
  142. 1610           ├┴╙┼ SCALE$(0,2)(1) ╧╞ // Y SCALE
  143. 1620           ╫╚┼╬ "N" // LETTERS EVEN SPACING
  144. 1630             ╔╞ YPIX/YN>10 ╘╚┼╬
  145. 1640               PLOTTEXT(PX,PY,N$)
  146. 1650             ┼╠╔╞ YPIX/YN>5 ┴╬─ I ═╧─ 2=0 ╘╚┼╬
  147. 1660               PLOTTEXT(PX,PY,N$)
  148. 1670             ┼╠╔╞ I ═╧─ 4=0 ╘╚┼╬
  149. 1680               PLOTTEXT(PX,PY,N$)
  150. 1690             ┼╠╙┼ 
  151. 1700               TICK:=3
  152. 1710             ┼╬─╔╞ 
  153. 1720             DRAWTO(HOR-TICK/INQ(30),VERT)
  154. 1730           ╫╚┼╬ "A"
  155. 1740             Y'START:=(╠┼╬(SCALE$(I,2))*8+6)/INQ(30)
  156. 1750             ╔╞ I<>0 ╘╚┼╬
  157. 1760               PLOTTEXT(XST-Y'START,VERT-4/INQ(31),SCALE$(I,2))
  158. 1770             ┼╬─╔╞ 
  159. 1780           ╫╚┼╬ "V" // LETTERS SET POSITIONS
  160. 1790             Y'CHAR'LEN:=(6+(╠┼╬(SCALE$(4+2*I,2)))*8)/INQ(30)
  161. 1800             PLOTTEXT(XST-Y'CHAR'LEN,╓┴╠(SCALE$(5+2*I,2))-4/INQ(31),SCALE$(4+2*I,2))
  162. 1810           ┼╬─├┴╙┼ 
  163. 1820         ┼╬─├┴╙┼ 
  164. 1830       ┼╬─╞╧╥ I // *** END DIVISION LOOP
  165. 1840     ┼╬─╞╧╥ AXIS
  166. 1850     // EXTRA AXES AND GRIDS
  167. 1860     CROSS'AXES
  168. 1870     ╔╞ VALUES(0,2)=╘╥╒┼ ┴╬─ ╘╚┼╬ TYPE<>1 ╘╚┼╬ GRID
  169. 1880     ╔╞ SCALE$(0,2)(1)="V" ╘╚┼╬ V'GRID(2)
  170. 1890     ╔╞ SCALE$(0,1)(1)="V" ╘╚┼╬ V'GRID(1)
  171. 1900   ┼╬─├┴╙┼ // END OF DRAWING AXES
  172. 1910   TEXTSTYLE(1,1,0,0) // FOR LABELS
  173. 1920   PLOTTEXT(XST+13/INQ(30),YEND+21/INQ(31),LABELS$(0))
  174. 1930   PLOTTEXT(XST-3/INQ(30),YEND+13/INQ(31),LABELS$(1))
  175. 1940   PLOTTEXT(XST-3/INQ(30),YEND+5/INQ(31),LABELS$(2))
  176. 1950   ├┴╙┼ TYPE ╧╞
  177. 1960   ╫╚┼╬ 1
  178. 1970     SCATTER'GRAPH
  179. 1980   ╫╚┼╬ 2
  180. 1990     LINE'GRAPH
  181. 2000   ╫╚┼╬ 3,4
  182. 2010     BAR'GRAPH
  183. 2020   ┼╬─├┴╙┼ 
  184. 2030   
  185. 2040   ╨╥╧├ SCATTER'GRAPH 
  186. 2050     VIEWPORT(OX+1,OX+XPIX,OY+1,OY+YPIX)
  187. 2060     ╞╧╥ K:=1 ╘╧ PAIRS ─╧
  188. 2070       PLOT(VALUES(K,1),VALUES(K,2))
  189. 2080     ┼╬─╞╧╥ K
  190. 2090   ┼╬─╨╥╧├ SCATTER'GRAPH
  191. 2100   
  192. 2110   ╨╥╧├ LINE'GRAPH 
  193. 2120     VIEWPORT(OX+1,OX+XPIX,OY+1,OY+YPIX)
  194. 2130     MOVETO(VALUES(1,1),VALUES(1,2))
  195. 2140     ╞╧╥ K:=1 ╘╧ PAIRS ─╧
  196. 2150       DRAWTO(VALUES(K,1),VALUES(K,2))
  197. 2160     ┼╬─╞╧╥ K
  198. 2170   ┼╬─╨╥╧├ LINE'GRAPH
  199. 2180   
  200. 2190   ╨╥╧├ BAR'GRAPH 
  201. 2200     VIEWPORT(OX-3,OX+XPIX+4,OY+1,OY+YPIX+4)
  202. 2210     ├┴╙┼ TYPE ╧╞
  203. 2220     ╫╚┼╬ 3
  204. 2230       START:=YST; OFFSET:=4/INQ(30); Y'UP:=1/INQ(31)
  205. 2240       ╔╞ YST<0 ┴╬─ ╘╚┼╬ YEND>0 ╘╚┼╬ START:=0
  206. 2250       ╔╞ YST<0 ┴╬─ ╘╚┼╬ YEND>0 ╘╚┼╬ START:=0
  207. 2260     ╫╚┼╬ 4
  208. 2270       ╔╞ XST<0 ┴╬─ ╘╚┼╬ XEND>0 ╘╚┼╬ START:=0
  209. 2280       START:=XST; OFFSET:=3/INQ(31); X'UP:=1/INQ(30)
  210. 2290       ╔╞ XST<0 ┴╬─ ╘╚┼╬ XEND>0 ╘╚┼╬ START:=0
  211. 2300     ┼╬─├┴╙┼ 
  212. 2310     ╞╧╥ I:=1 ╘╧ PAIRS ─╧
  213. 2320       // PLOT(VALUES(I,1)-5/INQ(30),VALUES(I,2)) // KEEP FOR TESTING
  214. 2330       ├┴╙┼ TYPE ╧╞
  215. 2340       ╫╚┼╬ 3
  216. 2350         HEIGHT:=VALUES(I,2)
  217. 2360         ╔╞ VALUES(I,2)>YEND ╘╚┼╬ HEIGHT:=YEND
  218. 2370         ╔╞ VALUES(I,2)<YST ╘╚┼╬
  219. 2380           ╔╞ START<>YST ╘╚┼╬
  220. 2390             HEIGHT:=YST+4/INQ(31)
  221. 2400           ┼╠╙┼ 
  222. 2410             HEIGHT:=YST
  223. 2420           ┼╬─╔╞ 
  224. 2430         ┼╬─╔╞ 
  225. 2440         PIXELS:=┴┬╙(╔╬╘((HEIGHT-START)*INQ(31)))
  226. 2450         ╔╞ PIXELS=0 ╘╚┼╬
  227. 2460           ╬╒╠╠
  228. 2470         ┼╠╔╞ ╙╟╬(VALUES(I,2))=-1 ┴╬─ ╘╚┼╬ START=0 ╘╚┼╬
  229. 2480           TEXTSTYLE(1,PIXELS,2,1)
  230. 2490           PLOTTEXT(VALUES(I,1)+OFFSET,START,├╚╥$(164))
  231. 2500         ┼╠╙┼ 
  232. 2510           TEXTSTYLE(1,PIXELS,0,1)
  233. 2520           PLOTTEXT(VALUES(I,1)-OFFSET,START+Y'UP,├╚╥$(164))
  234. 2530         ┼╬─╔╞ 
  235. 2540         ╔╞ VALUES(I,2)<YST ╘╚┼╬
  236. 2550           TEXTSTYLE(1,1,2,1)
  237. 2560           PLOTTEXT(VALUES(I,1)+OFFSET,YST+6/INQ(31),├╚╥$(94))
  238. 2570         ┼╠╔╞ VALUES(I,2)>YEND ╘╚┼╬
  239. 2580           TEXTSTYLE(1,1,0,1)
  240. 2590           PLOTTEXT(VALUES(I,1)-OFFSET,YEND-2/INQ(31),├╚╥$(94))
  241. 2600         ┼╬─╔╞ 
  242. 2610       ╫╚┼╬ 4
  243. 2620         HEIGHT:=VALUES(I,1)
  244. 2630         ╔╞ VALUES(I,1)>XEND ╘╚┼╬ HEIGHT:=XEND
  245. 2640         ╔╞ VALUES(I,1)<XST ╘╚┼╬
  246. 2650           ╔╞ START<>XST ╘╚┼╬
  247. 2660             HEIGHT:=XST+4/INQ(30)
  248. 2670           ┼╠╙┼ 
  249. 2680             HEIGHT:=XST
  250. 2690           ┼╬─╔╞ 
  251. 2700         ┼╬─╔╞ 
  252. 2710         PIXELS:=┴┬╙(╔╬╘((HEIGHT-START)*INQ(30)))
  253. 2720         ╔╞ PIXELS=0 ╘╚┼╬
  254. 2730           ╬╒╠╠
  255. 2740         ┼╠╔╞ ╙╟╬(VALUES(I,1))=-1 ┴╬─ ╘╚┼╬ START=0 ╘╚┼╬
  256. 2750           TEXTSTYLE(1,PIXELS,1,1)
  257. 2760           PLOTTEXT(START,VALUES(I,2)-OFFSET,├╚╥$(164))
  258. 2770         ┼╠╙┼ 
  259. 2780           TEXTSTYLE(1,PIXELS,3,1)
  260. 2790           PLOTTEXT(START+X'UP,VALUES(I,2)+OFFSET,├╚╥$(164))
  261. 2800         ┼╬─╔╞ 
  262. 2810         ╔╞ VALUES(I,1)<XST ╘╚┼╬
  263. 2820           TEXTSTYLE(1,1,1,1)
  264. 2830           PLOTTEXT(XST+4/INQ(30),VALUES(I,2)-OFFSET,├╚╥$(94))
  265. 2840         ┼╠╔╞ VALUES(I,1)>XEND ╘╚┼╬
  266. 2850           TEXTSTYLE(1,1,3,1)
  267. 2860           PLOTTEXT(XEND-2/INQ(30),VALUES(I,2)+OFFSET,├╚╥$(94))
  268. 2870         ┼╬─╔╞ 
  269. 2880       ┼╬─├┴╙┼ 
  270. 2890     ┼╬─╞╧╥ I
  271. 2900   ┼╬─╨╥╧├ BAR'GRAPH
  272. 2910   
  273. 2920   ╨╥╧├ CROSS'AXES // WHEN RELEVANT
  274. 2930     ╔╞ ╙╟╬(YST)=-1 ┴╬─ ╘╚┼╬ ╙╟╬(YEND)=1 ╘╚┼╬
  275. 2940       MOVETO(XST-4/INQ(30),0)
  276. 2950       DRAWTO(XEND+4/INQ(30),0)
  277. 2960     ┼╬─╔╞ 
  278. 2970     ╔╞ ╙╟╬(XST)=-1 ┴╬─ ╘╚┼╬ ╙╟╬(XEND)=1 ╘╚┼╬
  279. 2980       MOVETO(0,YST)
  280. 2990       DRAWTO(0,YEND)
  281. 3000     ┼╬─╔╞ 
  282. 3010   ┼╬─╨╥╧├ CROSS'AXES
  283. 3020   
  284. 3030   ╨╥╧├ GRID 
  285. 3040     ╞╧╥ UP:=1 ╘╧ YN ─╧
  286. 3050       ╞╧╥ ALONG:=XST ╘╧ XEND ╙╘┼╨ XI ─╧
  287. 3060         PLOT(ALONG,YST+UP*YI)
  288. 3070       ┼╬─╞╧╥ ALONG
  289. 3080     ┼╬─╞╧╥ UP
  290. 3090   ┼╬─╨╥╧├ GRID
  291. 3100   
  292. 3110   ╨╥╧├ V'GRID(SC) 
  293. 3120     JUMP:=╓┴╠(SCALE$(5,SC))
  294. 3130     END'V:=╓┴╠(SCALE$(0,SC)(2:))*2+3
  295. 3140     ╔╞ SC=1 ╘╚┼╬
  296. 3150       V'ST:=YST; V'END:=YEND
  297. 3160     ┼╠╙┼ 
  298. 3170       V'ST:=XST; V'END:=XEND
  299. 3180     ┼╬─╔╞ 
  300. 3190     ╞╧╥ K:=5 ╘╧ END'V ╙╘┼╨ 2 ─╧
  301. 3200       ╞╧╥ P:=V'ST ╘╧ V'END ╙╘┼╨ 4/INQ(32-SC) ─╧
  302. 3210         ╔╞ SC=2 ╘╚┼╬ PLOT(P,JUMP)
  303. 3220         ╔╞ SC=1 ╘╚┼╬ PLOT(JUMP,P)
  304. 3230       ┼╬─╞╧╥ P
  305. 3240       ╔╞ K<END'V ╘╚┼╬ JUMP:+(╓┴╠(SCALE$(K+2,SC)))-(╓┴╠(SCALE$(K,SC)))
  306. 3250     ┼╬─╞╧╥ K
  307. 3260   ┼╬─╨╥╧├ V'GRID
  308. 3270   
  309. 3280   ╨╥╧├ STORE(HOLD) 
  310. 3290     ├┴╙┼ HOLD ╧╞
  311. 3300     ╫╚┼╬ ╘╥╒┼
  312. 3310       ╞╧╥ K:=7 ╘╧ 26 ─╧
  313. 3320         HI(K):=INQ(K)
  314. 3330       ┼╬─╞╧╥ K
  315. 3340     ╫╚┼╬ ╞┴╠╙┼ //ENTER AS NEEDED
  316. 3350       TEXTSTYLE(HI(7),HI(8),HI(9),HI(10))
  317. 3360       VIEWPORT(HI(19),HI(20),HI(21),HI(22))
  318. 3370     ┼╬─├┴╙┼ 
  319. 3380   ┼╬─╨╥╧├ STORE
  320. 3390   
  321. 3400   ╞╒╬├ FIND'LENGTH(BEG,EN,ST,SC) 
  322. 3410     LENGTH:=0
  323. 3420     ╞╧╥ K:=BEG ╘╧ EN ╙╘┼╨ ST ─╧
  324. 3430       C'LEN:=╠┼╬(SCALE$(K,SC))
  325. 3440       ╔╞ LENGTH<C'LEN ╘╚┼╬ LENGTH:=C'LEN
  326. 3450     ┼╬─╞╧╥ K
  327. 3460     ╥┼╘╒╥╬ LENGTH*8 // IN PIXELS
  328. 3470   ┼╬─╞╒╬├ FIND'LENGTH
  329. 3480   ╞╒╬├ FIND'NO'LENGTH(NOST,NOEND,NOI) // SCALE NOS
  330. 3490     LEN'NO:=0
  331. 3500     ╞╧╥ K:=NOST ╘╧ NOEND ╙╘┼╨ NOI ─╧
  332. 3510       ╔╞ LEN'NO<╠┼╬(╙╘╥$(K)) ╘╚┼╬ LEN'NO:=╠┼╬(╙╘╥$(K))
  333. 3520     ┼╬─╞╧╥ K
  334. 3530     ╥┼╘╒╥╬ LEN'NO*8 // PIXELS
  335. 3540   ┼╬─╞╒╬├ FIND'NO'LENGTH
  336. 3550   
  337. 3560   ╨╥╧├ X'PRINT(X,Y,STRING$) 
  338. 3580     ╞╧╥ K:=1 ╘╧ ╠┼╬(STRING$) ─╧
  339. 3590       ╔╞ STRING$(K)=├╚╥$(46) ╘╚┼╬
  340. 3600         PLOTTEXT(X,Y+2/INQ(31),STRING$(K))
  341. 3610       ┼╠╙┼ 
  342. 3620         PLOTTEXT(X,Y,STRING$(K))
  343. 3630       ┼╬─╔╞ 
  344. 3640       Y:-8/INQ(31)
  345. 3650     ┼╬─╞╧╥ K
  346. 3660   ┼╬─╨╥╧├ X'PRINT
  347. 3670   
  348. 3680   STORE(0) // RESET VALUES
  349. 3690   //WINDOW(HI(23),HI(24),HI(25),HI(26)) // RESETS ORIGINAL WINDOW
  350. 3700 ┼╬─╨╥╧├ U'GRAPH
  351.